package com.jiangyg.devtools.execute.code.parser;

import com.jiangyg.devtools.entity.code.BeanProperty;
import com.jiangyg.devtools.toolkit.CommonUtils;
import com.jiangyg.devtools.toolkit.JsonUtils;
import org.apache.commons.lang.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 类描述：JSON的 Bean 属性解析器
 *
 * @author jiangyg
 * @version 1.0
 * @date 2023年09月22日
 */
public class JSONBeanPropertyParser extends AbstractPropertyParser {

    public JSONBeanPropertyParser(String input) {
        super(input);
    }

    @Override
    protected List<BeanProperty> parseBeanPropertyList() throws Exception {
        final List<BeanProperty> props = new ArrayList<>();

        // 解析 JSON 字符串
        final Map<String, Object> obj = JsonUtils.parseMap(input);

        // 生成属性
        obj.forEach((key, value) -> {
            final String type = value.getClass().getName();
            final String comment = StringUtils.EMPTY;
            final BeanProperty prop = buildBeanProperty(key, type, comment);
            props.add(prop);
        });

        return props;
    }

    @Override
    public boolean support() {
        return CommonUtils.isJsonObject(input);
    }

}
